package com.colin.bean;

import lombok.Data;

import java.sql.Date;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class Video {
    /**
     * 视频主键ID
     */
    private Long id;
    /**
     * 视频标题
     */
    private String title;
    /**
     * 视频描述
     */
    private String description;
    /**
     * 视频存储路径
     */
    private String videoUrl;
    /**
     * 封面图片存储路径
     */
    private String coverUrl;
    /**
     * 上传用户ID
     */
    private Long userId;
    /**
     * 视频分类
     */
    private String category;
    /**
     * 视频时长
     */
    private String durationTime;
    /**
     * 视频时长（秒）
     */
    private Integer durationSeconds;
    /**
     * 视频文件大小
     */
    private Long fileSize;
    /**
     *
     */
    private String fileFormat;
    /**
     * 播放次数
     */
    private Integer views;
    /**
     * 弹幕数量
     */
    private Integer danmakuCount;
    /**
     * 点赞数
     */
    private Integer likes;
    /**
     * 收藏数
     */
    private Integer collects;
    /**
     * 状态（0-待审核，1-已发布，2-已下架）
     */
    private Integer status;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    // 关联对象
    private List<Danmaku> danmakuList;
    private User uploader;

    /**
     * 将秒数转换为 "HH:mm:ss" 格式的
     */
    public static String secondsToTimeFormat(Long totalSeconds) {
        if (totalSeconds < 0) return "00:00";
        Long hours = totalSeconds / 3600;
        Long minutes = (totalSeconds % 3600) / 60;
        Long seconds = totalSeconds % 60;
        return String.format("%02d:%02d:%02d", hours, minutes, seconds);
    }

    /**
     * 将 "HH:mm:ss" 格式的字符串转换为秒数
     */
    public static int timeFormatToSeconds(String timeFormat) {
        if (timeFormat == null || !timeFormat.matches("^\\d{2}:\\d{2}:\\d{2}$"))
            return 0;
        String[] parts = timeFormat.split(":");
        int hours = Integer.parseInt(parts[0]);
        int minutes = Integer.parseInt(parts[1]);
        int seconds = Integer.parseInt(parts[2]);
        return hours * 3600 + minutes * 60 + seconds;
    }

    /**
     * 获取格式化的时长显示（用于前端直接展示）
     */
    public String getDisplayDuration() {
        if (durationTime == null) return "00:00";
        // 如果小于1小时，可以简化为 "mm:ss" 格式显示
        if (durationTime.startsWith("00:")) {
            return durationTime.substring(3); // 返回 "mm:ss"
        }
        return durationTime;
    }
}
